/*
 * @author				: Leandro Gimenez
 * @create				: 12/03/2011
 * @last modified		: 30/07/2011
 * @version				: 2.0
 * @description			: Manutenção de projetos
*/



var functionsFormGerenciarCusto = {
	
	calculaEstimativaProjeto: function(){
		var objparams = {
			codigoProjeto: functionsListAtividadesComCusto.Projeto_codigo
		}
		calculaEstimativaProjeto.load({params : objparams, callback: functionsFormGerenciarCusto.returnCalculaEstimativaProjeto});
	}
		
	,returnCalculaEstimativaProjeto: function(record, options, success){
		if(success){
			formGerenciarCusto.getForm().findField("dotacaoProjeto").setValue(record[0].get("valorEstimadoProjeto"));
			functionsFormGerenciarCusto.calculaCustoProjeto();
		}else{
			Ext.ux.MessageBox.flash({
				msg: "Ocorreu algum erro no momento do cálculo da estimativa do projeto",
				type: 'error'
			});
		}
		
		
				

	}
	
	,calculaCustoProjeto: function(){
		var objparams = {
			codigoProjeto: functionsListAtividadesComCusto.Projeto_codigo
		}
		calculaCustoProjeto.load({params : objparams, callback: functionsFormGerenciarCusto.returnCalculaCustoProjeto});
	}
	
	,returnCalculaCustoProjeto: function(record, options, success){
		if(success){
			formGerenciarCusto.getForm().findField("valorGasto").setValue(record[0].get("valorGastoProjeto"));
			functionsFormGerenciarCusto.calculaProjecaoEstimativa();
		}else{
			Ext.ux.MessageBox.flash({
				msg: "Ocorreu algum erro no momento do cálculo do custo do projeto",
				type: 'error'
			});
		}
		
		
	}
	
	
	,calculaProjecaoEstimativa: function(){
		var objparams = {
			codigoProjeto: functionsListAtividadesComCusto.Projeto_codigo
		}
		calculaProjecaoEstimativa.load({params : objparams, callback: functionsFormGerenciarCusto.returnCalculaProjecaoEstimativa});
	}
	
	,returnCalculaProjecaoEstimativa: function(record, options, success){
		if(success){
			formGerenciarCusto.getForm().findField("projecaoEstimativa").setValue(record[0].get("projecaoEstimativa"));
		}else{
			Ext.ux.MessageBox.flash({
				msg: "Ocorreu algum erro no momento do cálculo da projeção de estimativa",
				type: 'error'
			});
		}
	}
	
}


/*
 * @description: Variável que contém todas as funções de manipulação utilizadas
 * @author: Juliano Zinni
 * @since: 28/07/2011
*/

var functionsListAtividadesComCusto = {
	
	Projeto_codigo : ""	
		
	,init: function(){
		functionsListAtividadesComCusto.listaAtividadesComCusto(functionsListAtividadesComCusto.Projeto_codigo);
	}

	,listaAtividadesComCusto: function(codigoProjeto){
				
		var objparams = {
			codigoProjeto: codigoProjeto
		}
		listaAtividadesComCusto.load({params : objparams, callback: functionsListAtividadesComCusto.returnListaAtividadesComCusto});
	}
	
	,returnListaAtividadesComCusto: function(record, options, success){
		if(success){
			functionsFormGerenciarCusto.calculaEstimativaProjeto()
		}else{
			Ext.ux.MessageBox.flash({
				msg: "Ocorreu algum erro no momento da listagem de atividades com custo",
				type: 'error'
			});
		}

	}
	
}




/*
 * @description: Store responsável por chamar o serviço que calcula o valor gasto no projeto
 * @author: Juliano Zinni
 * @since: 13/10/2011
*/
var calculaCustoProjeto  = new Ext.data.JsonStore({
	storeId: 'calculaCustoProjeto',
    url: baseURL + '/service/index.php?controller=ProjetoController&service=calculaGastos',
    root: 'elements',
    autoLoad: false,
	sortInfo: {field: 'valorGastoProjeto', direction: 'ASC'},
    fields: [
		'valorGastoProjeto'
    ]
});




/*
 * @description: Store responsável por chamar o serviço que calcula o valor estimado do projeto com base nos valores estimados das atividades
 * @author: Juliano Zinni
 * @since: 13/10/2011
*/
var calculaEstimativaProjeto = new Ext.data.JsonStore({
    storeId: 'calculaEstimativaProjeto',
    url: baseURL + '/service/index.php?controller=ProjetoController&service=calculaEstimativaCusto',
    root: 'elements',
    autoLoad: false,
	sortInfo: {field: 'valorEstimadoProjeto', direction: 'ASC'},
    fields: [
		'valorEstimadoProjeto'
    ]
});


/*
 * @description: Store responsável por chamar o serviço que calcula a projeção de estimativa do projeto
 * @author: Juliano Zinni
 * @since: 09/11/2011
*/
var calculaProjecaoEstimativa = new Ext.data.JsonStore({
    storeId: 'calculaProjecaoEstimativa',
    url: baseURL + '/service/index.php?controller=ProjetoController&service=projecaoEstimativa',
    root: 'elements',
    autoLoad: false,
	sortInfo: {field: 'projecaoEstimativa', direction: 'ASC'},
    fields: [
		'projecaoEstimativa'
    ]
});







/*
 * @description: Store responsável por capturar as atividades com custo de um projeto específico
 * @author: Juliano Zinni
 * @since: 22/08/2011
*/
var listaAtividadesComCusto = new Ext.data.GroupingStore({
	
	storeId: 'listaAtividadesComCusto',
    url: baseURL + '/service/index.php?controller=ProjetoController&service=listarAtividadeComCusto',
    autoLoad: false,
	sortInfo: {field: 'titulo', direction: 'ASC'},
	groupField: 'ordemTarefa',
	reader: new Ext.data.JsonReader({
        idProperty:'codigo',
        fields: [
            {
				name		: 'codigo'
				,mapping	: 'codigo'
			}
			,{
				name		: 'titulo'
				,mapping	: 'titulo'
			}
			,{
				name		: 'voluntarioResponsavel'
				,mapping	: 'voluntarioResponsavel'
			}
			,{
				name		: 'dataInicio'
				,mapping	: 'dataInicio'
				,type 		: 'date'
				,dateFormat	: 'Y-m-d'
					
			}
			,{
				name		: 'dataFim'
				,mapping	: 'dataFim'
				,type 		: 'date'
				,dateFormat	: 'Y-m-d'
			}
			,{
				name		: 'ordemTarefa'
				,mapping	: 'ordemTarefa'
			}
			,{
				name		: 'valorEst'
				,mapping	: 'valorEst'
				,type		: 'float'
			}
			,{
				name		: 'valorOrcado'
				,mapping	: 'valorOrcado'
				,type		: 'float'
			}
			,{
				name		: 'valorReal'
				,mapping	: 'valorReal'
				,type		: 'float'
			}
			,{
				name		: 'variacaoCusto'
				,mapping	: 'variacaoCusto'
			}
			,{
				name		: 'situacao'
				,mapping	: 'situacao'
			}
        ],
		// additional configuration for remote
        root:'elements',
        remoteGroup:false,
        remoteSort: false
    })

});	









var summary = new Ext.ux.grid.HybridSummary();

var barButtonLegendaGerenciarCustos = new Ext.Panel({
	
	html: '<table cellpadding="2" cellspacing="2" style="font-size:11px"><tr><td><img src="img/marquer_green.png"></td><td>Atividade concluída(custos registrados)</td><td><img src="img/marquer_yellow.png"></td><td>Atividade sem custo real registrado</td></tr></table>'
	,cls: 'bar_button_atividade'
	,border: false
	,height: 28
	,style: 'padding:4px'
});

var gridAtividadesComCusto = new Ext.grid.GridPanel({
	id: 'atividadesComCusto'
	//,stripeRows	: false	
	,loadMask	: true
	,width: '100%'
	,autoHeight: true
	,border		: false
	//,tbar: barButtonAtividade
	,store: listaAtividadesComCusto
	,view: new Ext.grid.GroupingView({
        forceFit:false
        ,showGroupName: false
        ,enableNoGroups:false
		,enableGroupingMenu:false
        ,hideGroupedColumn: true
        ,emptyText		: 'Nenhum registro encontrado'
		,deferEmptyText : false
		,showPreview   : true
		,enableRowBody : true
		
		,getRowClass   : function(record, index) {
			if(record.data.valorReal != "" && record.data.valorReal != 0) {
				return 'green_row';
			}else{
				return 'yellow_row';
			}
		}
    })

    ,plugins: summary

	,width: '100%'
	,autoExpandColumn: 'titulo'
	,columns:[
		{
			dataIndex	: 'codigo'
			,id			: 'codigo'
			,header		: 'Cod'
			,width		: 50
		}
			
		,{
			dataIndex	: 'titulo'
			,id			: 'titulo' // necessário id para utilizar autoExpandColumn
			,header		: 'Título Atividade'
			,width		: 170					
		}
		
		,{
			dataIndex	: 'voluntarioResponsavel'
			,header		: 'Voluntário Responsável'
			,width		: 120					
		}
		
		,{
			dataIndex	: 'dataInicio'
			,header		: 'Data Início'
			,width		: 80
			,renderer	: Ext.util.Format.dateRenderer('d/m/Y')
		}
		
		,{
			dataIndex	: 'dataFim'
			,header		: 'Data Fim'
			,width		: 80
			,renderer	: Ext.util.Format.dateRenderer('d/m/Y')
		}
		
		,{
			dataIndex	: 'valorEst'
			,header		: 'Valor Estimado'
			,width		: 90
			,renderer : function(c, d, b) {
				if(c == "" || c == 0){
					return "";
				}else{
					var a = Ext.util.Format.number(c, '0.000,00/i');
					return '<span style="font-weight:bold">' + a + '</span>';
				}
			}
			,summaryRenderer : function(b, e, c) {
				var a = Ext.util.Format.number(b, '0.000,00/i');
				return '<span style="font-weight:bold; font-size:12px">' + a + '</span>';
			}
			,summaryType:'sum'
		}
		,{
			dataIndex	: 'valorReal'
			,header		: 'Valor Gasto'
			,width		: 80
			
			,renderer : function(c, d, b) {
				if(c == "" || c == 0){
					return "";
				}else{
					var a = Ext.util.Format.number(c, '0.000,00/i');
					return '<span style="font-weight:bold">' + a + '</span>';
				}
			}
			,summaryType:'sum'
			,summaryRenderer : function(b, e, c) {
				var a = Ext.util.Format.number(b, '0.000,00/i');
				return '<span style="font-weight:bold; font-size:12px">' + a + '</span>';
			}
				
		}
		
		,{
			dataIndex	: 'variacaoCusto'
			,header		: '%'
			,width		: 80
			,renderer	: function(value){
				
				if(value != ""){
					if(value < 0){
						return '<span style="font-weight:bold; color:green;">'+ value +'%</span>';
					}else{
						return '<span style="font-weight:bold; color:red;">'+ value +'%</span>';
					}
				}
			
			}
		}
		/*
		,{
			dataIndex	: 'situacao'
			,header		: 'Situação'
			,width		: 80
			,renderer	: trataSituacao
		}
		*/
		,{
			dataIndex	: 'ordemTarefa'
			,header		: ''
		}
	]
	
	
});


var tabsCustos = new Ext.TabPanel({
    activeTab: 0,
    width:'100%',
    height:250,
    plain:true,
    defaults:{autoScroll: true},
    items:[
        /*
        {
            title: 'Dotações do Projeto',
            items: gridDotacoes
            //html: "My content was added during construction."
        }
        ,*/{
            title: 'Atividades com custo',
            items: gridAtividadesComCusto
        }
    ]
    ,bbar: barButtonLegendaGerenciarCustos
});


var formGerenciarCusto = new Ext.form.FormPanel({
	layout: 'form'
	,border: false
	,defaultType: 'textfield'
	,bodyStyle: 'padding: 8px'
	, defaults:{
		anchor: '100%'
	}
	,items:[
		{
			xtype: 'fieldset'
			, title: 'Informações Financeiras'
			, collapsible: true
			, defaultType: 'textfield'
			, defaults:{
				anchor: '100%'
			}
			,items: [
				{
					xtype: 'masktextfield'
					,fieldLabel:'Estimativa de custo'
					,name:'dotacaoProjeto'
					,mask: 'R$ #9.999.990,00'
					,toolTip: "Estimativa de custo do projeto com base nos valores estimados das atividades"
					,money: true
					,height: 25
					,listeners: {
		                render: function(c) {
		                    Ext.QuickTips.register({
		                        target: this,
		                        text: this.toolTip
		                    });
		                }
		            }

					,style: {
			            fontSize: '18px'
			       	}
				}
				
				,{
					xtype: 'masktextfield'
					,fieldLabel:'Gasto até o momento'
					,name:'valorGasto'
					,disabled: true
					,mask: 'R$ #9.999.990,00'
					,money: true
					,toolTip: "Valor Total Gasto contabilizando somente gastos relacionados as atividades do projeto"
					,height: 25
					,value: '0.0'
					,listeners: {
		                render: function(c) {
		                    Ext.QuickTips.register({
		                        target: this,
		                        text: this.toolTip
		                    });
		                }
		            }
					,style: {
			            fontSize: '18px'
			            ,fontColor: 'red'
			       	}

				}
				,{
					xtype: 'masktextfield'
					,fieldLabel:'Projeção Estimativa'
					,name:'projecaoEstimativa'
					,mask: 'R$ #9.999.990,00'
					,toolTip: "Projeção de estimativa do projeto baseado nos lançamentos das atividades já concluídas"
					,money: true
					,height: 25
					,listeners: {
		                render: function(c) {
		                    Ext.QuickTips.register({
		                        target: this,
		                        text: this.toolTip
		                    });
		                }
		            }
					,value: '0.0'
					,style: {
			            fontSize: '18px'
			       	}
				}
			]
			/*
			,buttons:[
			    {
			    	text: 'Atualizar Estimativa'
					, iconCls: 'bt_cancelar'
					, scope	: this
					//, handler: this.confimaCancelamento
			        	  
			    }
			    ,{
		    		text: 'Salvar Dotação'
					, iconCls: 'bt_salvar'
					, scope	: this
					//, handler: this.confimaCancelamento
			    }
			        
			]
			*/
		}
		
		,tabsCustos
	]
});






var windowGerenciarCusto = new Ext.Window({
	width: 800
	,title: 'Gerenciar Custo'
	,height: 550
	,modal: false
	,layout: 'fit'
	,closeAction:'hide'
	//,constrain	: true
	,maximizable: true
	,items: [formGerenciarCusto]
	,listeners: {
		"afterrender": function(){ // carregamento só é executado depois da tela ser renderizada
			//functionsListAtividadesComCusto.listaAtividadesComCusto(1);
			//functionsListDotacao.listaDotacoes(1);
		}
	}
	
});



function writeWindow(){
	windowGerenciarCusto.show();
}